perm filename WHOFIL.SAI[HAK,HPM]1 blob
sn#275543 filedate 1977-04-08 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "WHOFIL"
C00006 ENDMK
C⊗;
BEGIN "WHOFIL"
SAFE INTEGER ARRAY TIED,UNTIED,LMAP,PRG,TMAP,UMAP['26:'117],WHO[-1:'37];
INTEGER UNTI,TEMP,I,J,L,NJOB;
INTEGER JOBN,JBTLIN,PRJPRG,NOUT; STRING OUTS;
require "outdd.rel[s,pmf]" load_module;
external procedure outdd(string s; INTEGER SPOS(2), PPOS(-1));
OUTSTR("Exit
↑C
.");
CALL(CVSIX("COPY"),"SETNAM");
JOBN←CALL('222,"PEEK");
JBTLIN←CALL('236,"PEEK");
PRJPRG←CALL('211,"PEEK");
WHILE TRUE DO
BEGIN
FOR J←1 STEP 1 UNTIL JOBN DO
BEGIN
L←CALL(JBTLIN+J,"PEEK") LAND '777777;
IF L≥'26 ∧ L≤'117 THEN
BEGIN LMAP[L]←J; PRG[L]←CALL(PRJPRG+J,"PEEK") LAND '777777; END;
END;
FOR L←'26 STEP 1 UNTIL '117 DO
BEGIN
TIED[L]←CALL(('5000 LOR L) LSH 18,"VDSMAP") LAND '777777;
comment 0 if untied, 400000,,0 if untied but resetable, or line number;
TEMP←CALL(('000000 LOR L) LSH 18,"VDSMAP");
UNTI←CALL(('200000 LOR L) LSH 18,"VDSMAP");
UMAP[L]←TMAP[L]←-1;
FOR I←0 STEP 1 UNTIL '37 DO
BEGIN
IF UNTI LAND ('400000000000 LSH -I) THEN UMAP[L]←I;
IF TEMP LAND ('400000000000 LSH -I) THEN TMAP[L]←I;
END;
WHO[TMAP[L]]←L;
END;
FOR L←'26 STEP 1 UNTIL '117 DO
IF UMAP[L]≠'11 ∧ UMAP[L]≠-1 ∧ TMAP[L]≠UMAP[L] THEN UNTIED[L]←WHO[UMAP[L]]
ELSE UNTIED[L]←L;
OUTS←('15&'12); NOUT←1;
FOR L←'26 STEP 1 UNTIL '117 DO
BEGIN
IF (TIED[L]≠0∧TIED[L]≠L∧PRG[L]≠PRG[TIED[L]]) ∨
(UNTIED[L]≠0∧UNTIED[L]≠L∧PRG[L]≠PRG[UNTIED[L]]) THEN
BEGIN
NOUT←NOUT+1;
OUTS←OUTS&("tty"&CVOS(L)&
(IF PRG[L]≠0 THEN "-"&CVXSTR(PRG[L])[4 to 6] ELSE "")
&" watches");
IF TIED[L]≠0∧TIED[L]≠L∧PRG[L]≠PRG[TIED[L]] THEN
OUTS←OUTS&(" tty"&CVOS(TIED[L])&
(IF PRG[TIED[L]]≠0 THEN "-"&CVXSTR(PRG[TIED[L]])[4 TO 6] ELSE "")
) ELSE
IF UNTIED[L]≠0∧UNTIED[L]≠L∧PRG[L]≠PRG[UNTIED[L]] THEN
OUTS←OUTS&(" tty"&CVOS(UNTIED[L])&
(IF PRG[UNTIED[L]]≠0 THEN "-"&
CVXSTR(PRG[UNTIED[L]])[4 TO 6] ELSE "")
);
OUTS←OUTS&('15&'12);
END;
END;
WHILE (NOUT MOD 4)≠0 DO BEGIN OUTS←OUTS&" "&'15&'12; NOUT←NOUT+1; END;
OUTDD(OUTS);
IF INCHRS≠-1 THEN CALL(0,"EXIT");
CALL(25,"SLEEP");
END;
END "WHOFIL";